Socket প্রোগ্রামিং এর বেসিক ধারণা

Sockets - ইন্টার প্রসেস কমিউনিকেশন (Inter Process Communication) - Computer Science

414

Socket Programming হল একটি প্রযুক্তি যা নেটওয়ার্কের মাধ্যমে বিভিন্ন ডিভাইসের মধ্যে যোগাযোগ এবং ডেটা আদান-প্রদানের জন্য ব্যবহৃত হয়। এটি মূলত TCP/IP প্রোটোকল স্ট্যাকের ওপর ভিত্তি করে কাজ করে এবং ক্লায়েন্ট-সার্ভার আর্কিটেকচার তৈরির জন্য ব্যবহার হয়। আসুন আমরা সকার প্রোগ্রামিং এর মৌলিক ধারণাগুলি বিস্তারিত আলোচনা করি।

1. সকার (Socket) কি?

  • Socket হল একটি সফটওয়্যার অবজেক্ট যা নেটওয়ার্কের মাধ্যমে যোগাযোগের জন্য ব্যবহৃত হয়। এটি একটি নির্দিষ্ট পোর্ট নম্বর এবং IP ঠিকানার সাথে যুক্ত থাকে, যা নেটওয়ার্কে তথ্য পাঠানোর জন্য ব্যবহার করা হয়।

2. সকার প্রোগ্রামিংয়ের প্রধান উপাদান

Client-Server Architecture:

  • সকার প্রোগ্রামিংয়ে একটি ক্লায়েন্ট এবং একটি সার্ভার থাকে। ক্লায়েন্ট একটি সার্ভারে সংযোগ করে এবং সার্ভার ক্লায়েন্ট থেকে প্রাপ্ত অনুরোধের ভিত্তিতে কাজ করে।

TCP এবং UDP:

  • TCP (Transmission Control Protocol): এটি একটি কানেকশন-ভিত্তিক প্রোটোকল, যা ডেটা ট্রান্সমিশনের আগে একটি স্থায়ী সংযোগ তৈরি করে। এটি ডেটা অর্ডার নিশ্চিত করে এবং ভুল হলে পুনঃসংযোগ স্থাপন করে।
  • UDP (User Datagram Protocol): এটি একটি কানেকশনহীন প্রোটোকল। এটি দ্রুত ডেটা প্রেরণ করে কিন্তু ডেটার অর্ডার এবং অখণ্ডতা নিশ্চিত করে না।

Socket Types:

  • Stream Sockets (TCP): TCP ব্যবহার করে যোগাযোগের জন্য ব্যবহৃত হয়।
  • Datagram Sockets (UDP): UDP ব্যবহার করে যোগাযোগের জন্য ব্যবহৃত হয়।

3. সকার প্রোগ্রামিংয়ের ধাপ

সকার প্রোগ্রামিংয়ের জন্য সাধারণত নিম্নলিখিত ধাপগুলি অনুসরণ করা হয়:

১. Socket তৈরি করা:

  • socket() ফাংশন ব্যবহার করে একটি নতুন সকার তৈরি করুন।

২. সার্ভারের ঠিকানা নির্ধারণ করা:

  • sockaddr_in স্ট্রাকচার ব্যবহার করে সার্ভারের IP ঠিকানা এবং পোর্ট নম্বর সেট করুন।

৩. সার্ভারের সাথে সংযোগ স্থাপন (ক্লায়েন্টের জন্য):

  • connect() ফাংশন ব্যবহার করে সার্ভারের সাথে সংযোগ করুন।

৪. ডেটা পাঠানো এবং গ্রহণ করা:

  • send() এবং recv() ফাংশনগুলি ব্যবহার করে ডেটা পাঠানো এবং গ্রহণ করা।

৫. সংযোগ বন্ধ করা:

  • close() ফাংশন ব্যবহার করে সকার বন্ধ করুন।

4. সকার প্রোগ্রামিংয়ের একটি উদাহরণ

এখানে একটি সাধারণ TCP ক্লায়েন্ট-সার্ভার প্রোগ্রামের উদাহরণ দেওয়া হল।

সার্ভার কোড (server.c):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 8080

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int opt = 1;
    int addrlen = sizeof(address);
    char buffer[1024] = {0};

    // সার্ভার সকার তৈরি
    server_fd = socket(AF_INET, SOCK_STREAM, 0);
    setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(PORT);

    // সার্ভার ব্যান্ড করুন
    bind(server_fd, (struct sockaddr *)&address, sizeof(address));
    listen(server_fd, 3);

    // নতুন ক্লায়েন্টের জন্য অপেক্ষা
    new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen);
    read(new_socket, buffer, 1024);
    printf("Received: %s\n", buffer);

    // ক্লায়েন্টের প্রতি উত্তর পাঠান
    char *message = "Hello from server!";
    send(new_socket, message, strlen(message), 0);

    // সকার বন্ধ করুন
    close(new_socket);
    close(server_fd);
    return 0;
}

ক্লায়েন্ট কোড (client.c):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 8080

int main() {
    int sock = 0;
    struct sockaddr_in serv_addr;
    char *message = "Hello from client!";
    char buffer[1024] = {0};

    // ক্লায়েন্ট সকার তৈরি
    sock = socket(AF_INET, SOCK_STREAM, 0);
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(PORT);

    // সার্ভারের IP ঠিকানা সেট করা
    inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);

    // সার্ভারের সাথে সংযোগ স্থাপন
    connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

    // সার্ভারে ডেটা পাঠান
    send(sock, message, strlen(message), 0);
    read(sock, buffer, sizeof(buffer)); // সার্ভার থেকে ডেটা গ্রহণ করা
    printf("Received from server: %s\n", buffer);

    // সকার বন্ধ করুন
    close(sock);
    return 0;
}

উপসংহার

Socket Programming হল একটি গুরুত্বপূর্ণ প্রযুক্তি যা নেটওয়ার্কের মাধ্যমে প্রক্রিয়াগুলির মধ্যে যোগাযোগ নিশ্চিত করে। socket(), connect(), send(), recv(), এবং close() এর মতো ফাংশনগুলি ব্যবহার করে, আপনি TCP/IP প্রোটোকলের উপর ভিত্তি করে ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন তৈরি করতে পারেন। এই প্রযুক্তিটি বাস্তব সময়ের অ্যাপ্লিকেশন, চ্যাট সিস্টেম, এবং নেটওয়ার্ক পরিষেবাগুলিতে ব্যাপকভাবে ব্যবহৃত হয়।

Promotion

Are you sure to start over?

Loading...